Impinj Commands

QT commands

Readers which support Impinj QT Custom command features report the same in IsImpinjQTCommand- Supported  property of the Reader Capabilities class . Impinj QT tags support additional features like public/private modes of memory map, short/normal range of operation. QT tags default in public memory map mode in which the tag’s other memory bank’s content is inaccessible. By Impinj QT Write operation, tags may be moved into private memory map mode, whose EPC itself is different and public mode’s EPC is now remapped to a block inside the TID of the private mode’s memory map. Also, to offer protection to the memory bank content from stray RFID readers, the range of operation may be set to short range /normal range by the Impinj QT Write operation. Besides, the changes in modes may be made persistent (i.e. retained after tag de-Energization) or short lived (i.e. until the tag de-energizes). The status of the modes may be read back by Impinj QT Read operation. A single control word describes the desired/current status of the QT tags – 16th bit (MSB) for Public/Private mode and 15th bit for Short range/normal range mode

Impinj.QTReadAccessParams qtReadAccessParams = new Impinj.QTReadAccessParams();

qtReadAccessParams.setAccessPassword(0x00);

Impinj.QTWriteAccessParams qtWriteParams = new Impinj.QTWriteAccessParams();

qtWriteParams.setAccessPassword(0x0);

qtWriteParams.setQTPersist(true);

qtWriteParams.setQTControlData((short)0x00);

 

TagFocus feature

Impinj’s Monza 4, Monza 5, and Monza R6 tag chips offer a feature called TagFocus. This feature enables a reader to instruct tags to continue to refresh their A/B flag setting such that they remain in a non-responsive state. By instructing tags that have already been inventoried to remain silent while inventorying other tags, reader has a far greater chance of finding difficult-to-read tags. This feature can be enabled by configuring antenna’s singulation settings and applying a pre-filter (same as the Select command of C1G2 specification) with specific parameter values. This feature can be disabled by deleting the pre-filter with specific parameter values from the API.

Note: This feature is applicable only for FX7500 and FX9600.

// configure antenna’s singulation settings using Session 1 with Flag A

short[] antID = reader.Config.Antennas.getAvailableAntennas();

for (int index = 0; index < antID.length; index++)

{

     SingulationControl singularControl = reader.Config.Antennas.getSingulationControl(antID[index]);

     singularControl.Action.setPerformStateAwareSingulationAction(true);

     singularControl.setSession(SESSION.SESSION_S1);                   

     singularControl.Action.setInventoryState(INVENTORY_STATE.INVENTORY_STATE_A);

     singularControl.Action.setSLFlag(SL_FLAG.SL_FLAG_DEASSERTED);

     reader.Config.Antennas.setSingulationControl(antID[index], singularControl);

}

 

//apply a pre-filter to the reader with specific parameter values

reader.Actions.PreFilters.deleteAll(); // delete all existing pre-filters first

 

PreFilters filters = new PreFilters();

PreFilters.PreFilter tagFocusFilter = filters.new PreFilter();

 

byte[] tagMask = { (byte)0x80, (byte)0x06, (byte)0x00 };

tagFocusFilter.setBitOffset(6);

tagFocusFilter.setAntennaID((short)0);

tagFocusFilter.setTagPattern(tagMask);

tagFocusFilter.setTagPatternBitCount(20);

tagFocusFilter.setMemoryBank(MEMORY_BANK.MEMORY_BANK_TID);

tagFocusFilter.setFilterAction(FILTER_ACTION.FILTER_ACTION_STATE_AWARE);

tagFocusFilter.StateAwareAction.setTarget(TARGET.TARGET_INVENTORIED_STATE_S1);

tagFocusFilter.StateAwareAction.setStateAwareAction(STATE_AWARE_ACTION.STATE_AWARE_ACTION_INV_B);

 

reader.Actions.PreFilters.add(tagFocusFilter);

 

//perform simple inventory

reader.Actions.Inventory.perform();

 

 

 

//disable TagFocus feature

reader.Actions.PreFilters.delete(tagFocusFilter);